1
โมเดลการดำเนินการแบบ SIMT และการแบ่งแบ่งวาร์ป
AI032Lesson 6
00:00

นี่คือ SIMT (คำสั่งเดียว หลายเธรด) โมเดลนี้คือหัวใจของสถาปัตยกรรม GPU แม้ว่าคุณจะเขียนโปรแกรมสำหรับเธรดแต่ละตัว ฮาร์ดแวร์ก็จัดการให้พวกมันรวมกันเป็นโครงสร้างชั้นสองระดับที่เรียกว่า กริด และ บล็อกเพื่อเพิ่มประสิทธิภาพสูงสุด ฮาร์ดแวร์จะแบ่งบล็อกเหล่านี้ต่อไปเป็นหน่วยที่มี 32 เธรด เรียกว่า วาร์ป

1. SIMT เปรียบเทียบกับ SIMD

ต่างจากซีพียูแบบ SIMD (เช่น SSE/AVX) ที่ต้องจัดเก็บข้อมูลลงในเรจิสเตอร์ด้วยตนเอง แต่ SIMT อนุญาตให้เธรดดูเหมือนทำงานอิสระต่อกัน โดยฮาร์ดแวร์จะจัดกลุ่มเธรดเป็นวาร์ปโดยอัตโนมัติ แล้วดึงคำสั่งเดียวมาใช้กับเธรดทั้ง 32 ตัว พร้อมกันอย่างสมมาตร

2. กฎการแปลงเป็นลำดับ 1 มิติ

นักพัฒนาใช้ threadIdx.x, y, z เพื่อจัดลำดับตรรกะ แต่ฮาร์ดแวร์จะแปลงข้อมูลนี้เป็นลำดับ 1 มิติ เพื่อใช้ในการจัดลำดับ:

เลขดัชนี = x + (y × blockDim.x) + (z × blockDim.x × blockDim.y)
บล็อก 2 มิติ(8 × 8)วาร์ป 0: รหัส 0-31วาร์ป 1: รหัส 32-63

เนื่องจาก มิติ x เป็นดัชนีที่เปลี่ยนแปลงเร็วที่สุด เธรดที่มีค่า threadIdx.x ต่อเนื่องมักจะอยู่ในวาร์ปเดียวกัน ซึ่งสำคัญต่อ การรวมหน่วยความจำ

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>